package day13Exer;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/*
* .将一个字符串转化为字符和出现次数,比如 aabbbswacc 转化为 a3b3c2s1w1(使用Map集合)
* */
public class Demo2 {
    public static void main(String[] args) {
        String str = "aabbbswacc";

        String newStr = stringConvert(str);

        System.out.println(newStr);
    }

    public static String stringConvert(String str){


        //将字符串转换为Char数组
        char[] chs = str.toCharArray();

        //声明map对象，将key作为字符，value作为字符出现的次数
        //如果当前字符在map中没有出现，直接将字符和出现次数1放入到map中
        //如果当前字符在map中存在，将对应value取出加1放入到集合中
        Map<Character,Integer> map = new HashMap<>();

        for (int i = 0; i < chs.length; i++) {
            //判断当前字符在map中是否存在
             if(map.containsKey(chs[i])){
//                 Integer count = map.get(chs[i]);
                 map.put(chs[i],map.get(chs[i])+1);
             }else{
                 map.put(chs[i],1);
             }
        }

        //定义StringBuffer，接收map中key和value的拼接
        StringBuffer strBu = new StringBuffer();

        //将map中的所有的key放到一个set集合中 keySet方法
        Set<Character> set = map.keySet();

        for(Character c:set){
            strBu.append(c);
            strBu.append(map.get(c));
        }

        return strBu.toString();
    }
}
